package org.jeecg.modules.utils;


import java.io.File;

public class FileUtils {
    // 删除文件夹下所有文件
    public static void deleteFiles(File rootFile) {
        //参数是根文件夹
        if (rootFile.listFiles().length == 0) {// 如果用户给定的是空文件夹就退出方法
            System.out.println("空");
            return;//退出
        } else {
            File[] files = rootFile.listFiles();// 将非空文件夹转换成File数组
            for (File file : files) {//使用foreach语句遍历文件数组
                if (file.isFile()) {//判断是否为文件
                    boolean delete = file.delete();// 删除指定文件夹下的所有文件
                    System.out.println(delete+":"+file.getAbsolutePath());
                } else {
                    if (file.listFiles().length == 0) {//file类型是文件夹且文件夹为空
                        boolean delete = file.delete();// 删除指定文件夹下的所有空文件夹
                        System.out.println(delete+":"+file.getAbsolutePath());
                    } else {
                        deleteDirectories(file);// 删除指定文件夹下的所有非空文件夹（包括file）
                    }
                }
            }
            rootFile.delete();
        }
    }

    // 删除文件夹及文件夹下所有文件
    public static void deleteDirectories(File rootFile) {
        if (rootFile.isFile()) {//第一次肯定不是文件类型，因为deleteFiles方法中已经判断过了
            rootFile.delete();// 如果给定的File对象是文件就直接删除
        } else {// 如果是一个文件夹就将其转换成File数组
            File[] files = rootFile.listFiles();// 将非空文件夹转换成File数组
            for (File file : files) {//使用foreach语句遍历文件数组
                deleteDirectories(file);// 如果不是空文件夹则就迭代deleteDictionary()方法
            }
            rootFile.delete();// 如果是空文件夹就直接删除
        }
    }
    /**
     * 判断文件大小
     *
     * @param len
     *            文件长度
     * @param size
     *            限制大小
     * @param unit
     *            限制单位（B,K,M,G）
     * @return
     */
    public static boolean checkFileSize(Long len, int size, String unit) {
//        long len = file.length();
        double fileSize = 0;
        if ("B".equals(unit.toUpperCase())) {
            fileSize = (double) len;
        } else if ("K".equals(unit.toUpperCase())) {
            fileSize = (double) len / 1024;
        } else if ("M".equals(unit.toUpperCase())) {
            fileSize = (double) len / 1048576;
        } else if ("G".equals(unit.toUpperCase())) {
            fileSize = (double) len / 1073741824;
        }
        if (fileSize > size) {
            return false;
        }
        return true;
    }
}
